/**
 * 动态规划，依靠前边的值，只是判断取Math.max(j*(i-j),j*dp[i-j])这个递推公式不容易理解
 * @param {number} n
 * @return {number}
 */
var integerBreak = function(n) {
    let dp = [0,0]
    for(let i = 2;i<=n;i++){
        let curMax = 0
        for(let j = 1;j<i;j++){
            curMax = Math.max(curMax || 0,Math.max(j*(i-j),j*dp[i-j]))
        }
        dp[i] = curMax
    }
    return dp[n]
};